package com.ifreeee.sort.quicksort.stack;

/**
 * 链表 实现的 栈 结构
 */
public class LinkedStack {
    private LinkedStackNode head = new LinkedStackNode();

    //进栈，头插法

    /**
     * @param left 左下标
     * @param right 右下标
     * @param pivot 基准下标
     */
    public void push(int left, int right, int pivot){
        LinkedStackNode linkedStackNode = new LinkedStackNode(left, right, pivot);//新建一个节点
        linkedStackNode.setNext(head.getNext());//新节点的 next指针 指向 头节点的nezt指针
        head.setNext(linkedStackNode);//头节点的next指针 指向 新节点
    }

    //出栈，如果到了栈底，返回null

    /**
     * 弹栈 如果到了栈底，返回null
     * @return
     */
    public LinkedStackNode pop(){
        LinkedStackNode popTemp = head.getNext();//获取要弹栈的对象
        if(popTemp != null){
            head.setNext(popTemp.getNext());//删除要弹栈的对象
        }
        return popTemp;
    }

}
